ns
, require
, এবং use
এর মাধ্যমে Namespace তৈরিক্লোজার (Clojure) এ namespace একটি অত্যন্ত গুরুত্বপূর্ণ ধারণা, যেটি কোডের সংগঠন এবং মডুলারিটি সহজতর করতে সাহায্য করে। একটি namespace হল কোডের একটি logical নাম, যা কোডের বিভিন্ন অংশকে একত্রিত করে এবং তাদের মধ্যে সম্পর্ক তৈরি করে। ক্লোজারে ns
, require
, এবং use
এর মাধ্যমে namespace তৈরি এবং ব্যবহারের প্রক্রিয়া অনেক সহজ এবং কার্যকরী।
ns
এর মাধ্যমে Namespace তৈরিns
(namespace) একটি ম্যাক্রো যা একটি নতুন namespace তৈরি করতে ব্যবহৃত হয়। এটি সাধারণত কোডের শুরুর দিকে ব্যবহার করা হয় এবং এতে namespace এর নাম এবং অন্যান্য কনফিগারেশন উল্লেখ করা হয়।
(ns namespace-name
(:require [other-namespace :as alias]))
ns
ব্যবহার করে Namespace তৈরি(ns my-app.core
(:require [clojure.string :as str]))
(defn greeting [name]
(str "Hello, " name "!"))
এখানে, my-app.core
namespace তৈরি করা হয়েছে এবং clojure.string
namespace কে str
নামে অ্যালিয়াস দিয়ে require করা হয়েছে।
require
এর মাধ্যমে Namespace Importrequire
হল একটি কনফিগারেশন ম্যাক্রো যা অন্য namespace থেকে ফাংশন বা মান ইনক্লুড করতে ব্যবহৃত হয়। require
নামস্পেস বা লাইব্রেরি কল করার সময় তার কার্যকরী অংশকে ব্যবহারযোগ্য করে তোলে।
(ns your-namespace
(:require [namespace-to-import :as alias]))
namespace-to-import
: যে namespace বা লাইব্রেরি থেকে ফাংশন এবং মানগুলো আনা হবে।alias
: ইচ্ছেমতো নাম যা আপনি ইনক্লুড করা namespace এর জন্য ব্যবহার করতে চান।require
এর মাধ্যমে Namespace Import(ns my-app.core
(:require [clojure.string :as str]))
(defn shout [text]
(str/upper-case text))
এখানে clojure.string
namespace কে str
নামে অ্যালিয়াস দেওয়া হয়েছে এবং upper-case
ফাংশনটি ব্যবহার করা হয়েছে।
use
এর মাধ্যমে Namespace Importuse
একটি পুরনো কৌশল যা একটি namespace এর সমস্ত নাম (functions, variables) সরাসরি বর্তমান namespace এ নিয়ে আসে। এর মাধ্যমে আপনি নির্দিষ্ট namespace এর সব ফাংশন বা ভ্যারিয়েবল ব্যবহার করতে পারেন, তবে এটি require
এর তুলনায় কিছুটা ঝুঁকিপূর্ণ হতে পারে কারণ এটি namespace থেকে সব কিছুই এনে দেয় এবং এভাবে নাম সংঘর্ষ হতে পারে।
নোট: বর্তমান ক্লোজার সংস্করণে
use
ব্যবহার করা কমে গেছে এবংrequire
সাধারণত বেশি ব্যবহৃত হয়, কারণ এটি আরো নির্দিষ্ট এবং সুরক্ষিত।
(ns your-namespace
(:use [namespace-to-import]))
use
এর মাধ্যমে Namespace Import(ns my-app.core
(:use [clojure.string]))
(defn shout [text]
(upper-case text))
এখানে clojure.string
namespace এর সকল ফাংশন সরাসরি ব্যবহার করা হয়েছে, যেমন upper-case
ফাংশনটি।
একটি namespace তৈরি করার পর, অন্য namespace থেকে ফাংশন বা মান ব্যবহার করা সম্ভব। require
বা use
এর মাধ্যমে যে namespace ইম্পোর্ট করা হয়, তার ফাংশনগুলো ব্যবহার করা যায়।
(ns my-app.core
(:require [clojure.string :as str]))
(defn greet [name]
(str/join " " ["Hello" name]))
(defn shout [name]
(str/upper-case (greet name)))
এখানে, my-app.core
namespace তে clojure.string
এর join
এবং upper-case
ফাংশন দুটি ব্যবহার করা হয়েছে।
require
ব্যবহার করার সময় আপনি ইচ্ছামতো একটি namespace এর জন্য alias দিতে পারেন, যা কোডে ব্যবহার করা আরও সহজ করে তোলে। এটি বড় প্রোজেক্টে নামগুলোর সাথে সংঘর্ষ এড়াতে সাহায্য করে এবং কোডের পাঠযোগ্যতা বাড়ায়।
(ns my-app.core
(:require [clojure.string :as str]))
(defn shout [name]
(str/upper-case (str/join " " ["Hello" name])))
এখানে, clojure.string
namespace কে str
নামে অ্যালিয়াস দেওয়া হয়েছে, যা কোডকে আরও সংক্ষিপ্ত এবং পরিষ্কার করে তোলে।
ফাংশন | বর্ণনা |
---|---|
ns | নতুন namespace তৈরি করতে ব্যবহৃত হয়। |
require | অন্য namespace বা লাইব্রেরি থেকে ফাংশন বা মান যোগ করতে ব্যবহৃত হয়। |
use | একটি namespace এর সমস্ত নাম বর্তমান namespace এ এনে দেয়। (কম ব্যবহৃত) |
ক্লোজারে namespace ব্যবহার করা কোডের সংগঠন এবং স্কেলেবিলিটির জন্য অত্যন্ত গুরুত্বপূর্ণ। require
এবং use
দিয়ে অন্য namespace থেকে ফাংশন ও মান আমদানি করা যায়, এবং ns
দিয়ে নতুন namespace তৈরি করা হয়।
common.read_more